package com.chinaedu.oc.util.common;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

/**
 * json转换工具
 * @Description: TODO
 * @author A18ccms a18ccms_gmail_com 
 * @date 2017年5月9日 下午2:09:00 
 *
 */
public class JsonUtil{
	/**
	 * 字符串转类
	 * @Description: TODO
	 * @param @param json
	 * @param @param clazz
	 * @param @return    
	 * @return T    返回类型 
	 * @throws
	 */
	public static <T> T toBean(String json, Class<T> clazz) {
		return JSON.parseObject(json, clazz);
	}
	/**
	 * 转类
	 * @Description: TODO
	 * @param @param json
	 * @param @param clazz
	 * @param @return    
	 * @return T    返回类型 
	 * @throws
	 */
	public static <T> T toBean(JSONObject json, Class<T> clazz) {
		return JSON.toJavaObject(json, clazz);
	}
	/**
	 * 类转json
	 * @Description: TODO
	 * @param @param o
	 * @param @return    
	 * @return JSONObject    返回类型 
	 * @throws
	 */
	public static JSONObject toJson(Object o) {
		JSONObject parseObject = JSON.parseObject(JSON.toJSONString(o));
		return parseObject;
	}
	/**
	 * 任意类型转jsonString
	 * @Description: TODO
	 * @param @param obj
	 * @param @return    
	 * @return String    返回类型 
	 * @throws
	 */
	public static String toJsonString(Object obj) {
		return JSON.toJSONString(obj);
	}
	/**
	 * 转成list
	 * @Description: TODO
	 * @param @param jsonArray
	 * @param @param clazz
	 * @param @return    
	 * @return List<T>    返回类型 
	 * @throws
	 */
	public static <T> List<T> toList(String jsonArray, Class<T> clazz) {
		return JSONObject.parseArray(jsonArray, clazz); 
	}
	
	
	//Result<User> obj = (Result<User>) JSON.parseObject(json, new TypeReference<Result<User>>(){});
	
	

	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {

		
//		String mmm = "123";
//		JSONObject j = JsonUtil.toJson(mmm);
//		String b = JsonUtil.toBean(j, String.class);
//		System.out.println(b);;
//		
//		
//		User u = new User();
//		u.setId("123");
//		u.setName("name");
//
//		//JSONObject j = JsonUtil.toJson(u);
//
//		System.out.println(j);
//
//		User user = JsonUtil.toBean(j, User.class);
//		System.out.println(user);
//
//		List<User> list = new ArrayList<User>();
//		for (int i = 0; i < 3; i++) {
//			User uu = new User();
//			uu.setId("" + i);
//			uu.setName("" + i);
//
//			list.add(uu);
//		}
//		
//		String str = JSON.toJSONString(list);
//		
//		List<User> parseArray = JSONObject.parseArray(str, User.class);
//		
//		System.out.println(parseArray);
		
		User user = new User();

	}

}

class User implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String id;
	private String name;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	}

}

class People {
	private String p;
	private List<User> user;

	public String getP() {
		return p;
	}

	public void setP(String p) {
		this.p = p;
	}

	

	public List<User> getUser() {
		return user;
	}

	public void setUser(List<User> user) {
		this.user = user;
	}

	@Override
	public String toString() {
		return "People [p=" + p + ", user=" + user + "]";
	}

}
